package cn.tedu.quartz;


import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.awt.*;
import java.util.Date;


public class QuartzTest implements Job {
    public QuartzTest(){}
    public QuartzTest(String orderNo) throws SchedulerException {
        //创建调度器工厂
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        //获取调度器
        Scheduler scheduler = schedulerFactory.getScheduler();
        //获取当前时间
        long now =  System.currentTimeMillis();
        //
        long deviceCheckTime = now + 60 * 1000;

        Date triggerTime = new Date(deviceCheckTime);

        Trigger trigger =
                TriggerBuilder.newTrigger().startAt(triggerTime).build();

        JobDetail jobDetail = JobBuilder.newJob(QuartzTest.class)
                //给任务起名字
                //deviceCheckJob设备检查 ,deviceCheckJob设备检查的分组
                //名字和组的目的是什么？ 来区分不同的任务
                //不同的用户创建不同的订单是同一个任务吗？不是吧 为了区分可以加一个时间，或者随机号或者订单号
                .withIdentity("deviceCheckJob" + orderNo , "deviceCheckJobGroup")
                //这是任务（任务详情）  就是创建任务的时候把orderNo给塞进去
                .usingJobData("orderNo",orderNo)
                .build();
        //该用调度器了
        //调度器 把任务和触发器进行绑定
        //调度器 scheduler，让任务JobDetail 和按照 触发器的时间trigger 来触发
        scheduler.scheduleJob(jobDetail,trigger);
        //启动调度器
        scheduler.start();
    }

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

        System.out.println("Hello Quartz");
        JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap();
        String orderNo = jobDataMap.getString("orderNo");
        System.out.println("Hello Quartz0" + orderNo);
    }
}
